using System.Collections.Generic;
using System.Drawing;
using GLWrap;
using GLWrap.SceneObjects;
using ReAnimation.Domain;

namespace ReAnimation.Graphics
{
    public interface IMoleculeDrawer
    {
        Color SelectedAtomColor { get; set; }
        IGlSceneManager GlSceneManager { get; }
        Molecule Molecule { get; set; }
        SceneObject MoleculeSceneObject { get; }

        IDictionary<SceneObject, Atom> SceneToAtomMap { get; }
        IDictionary<SceneObject, Link> SceneToLinkMap { get;  }


        IDictionary<Atom, AtomEmphasizeParams> EmphasizedAtoms { get; }
        void EmphasizeAtom(Atom atom, AtomEmphasizeParams atomEmphasizeParams);
        void DeemphasizeAtom(Atom atom);
        void EmphasizeAtoms(IDictionary<Atom, AtomEmphasizeParams>  atomSelections);
        void DeemphasizeAtoms(IEnumerable<Atom> atoms);      

        void Init(IGlSceneManager glSceneManager);
        void Update(bool withUpdate);
    }
}